Génération des graphiques pour la visualisation des données initiales de la CACPL

Pour un affichage interactif, merci de se référer à ce lien

Importation des librairies

In [1]:
import pandas as pd
from json import load
import plotly.express as px
In [2]:
# Pour affichage dynamique des graphiques Plotly sur GitHub
import plotly.offline as po
po.init_notebook_mode()

Récupération et préparation des données

In [3]:
data171819 = pd.read_excel("../../data/collecte verre CACPL/Données Verre 2017-2018- 2019 janv à nov.xlsx", skiprows=[0,1], usecols="B:L")
data20 = pd.read_excel("../../data/collecte verre CACPL/Verre PAV 2020.xlsx", skiprows=[0,1,2], usecols="B:F")

data171819.drop_duplicates(inplace=True)
data20.drop_duplicates(subset=data20.columns[1:], inplace=True)

dictVilles = { "CAN": "Cannes", "CNT": "Le Cannet", "MAN": "Mandelieu-la-Napoule", "MOU": "Mougins", "THE": "Théoule-sur-Mer"}
In [4]:
# Standardisation des noms de ville (seule la majuscule est en capitale)
# Création du dictionnaire pour la conversion
dictVillesMajuscules = { "CANNES": "Cannes", "LE CANNET": "Le Cannet", "MANDELIEU-LA-NAPOULE": "Mandelieu-la-Napoule", "MOUGINS": "Mougins", "THÉOULE-SUR-MER": "Théoule-sur-Mer"}
# Transformation des valeurs de la colonne par association avec le dictionnaire
for i in data171819.index:
    data171819.loc[i, "Ville"] = dictVillesMajuscules[data171819.loc[i, "Ville"]]

# Standardisation des noms des colonnes utilisées
data171819.rename(columns={"MOIS": "Mois", "Poids Kg": "Poids"}, inplace=True)

data171819
Out[4]:
Collecte Contenant Adresse Ville Année Mois SEMAINE date heure Taux Poids
0 PAV CNT135V CHEMIN DES BREGUIERES Le Cannet 2017 Janvier 1 2017-01-05 06:32:09 2 500
1 PAV CNT005V RUE DES MOULIERES Le Cannet 2017 Janvier 1 2017-01-05 06:38:41 2 420
2 PAV CNT165V AVENUE DU REPOS Le Cannet 2017 Janvier 1 2017-01-05 06:44:56 1 210
3 PAV CNT115V RUE DES ORANGERS Le Cannet 2017 Janvier 1 2017-01-05 06:48:51 2 450
4 PAV CNT150V BOULEVARD D'OLIVETUM Le Cannet 2017 Janvier 1 2017-01-05 06:54:58 3 730
... ... ... ... ... ... ... ... ... ... ... ...
24755 PAV CAN013V ALLEE DE LA LIBERTE Cannes 2019 Novembre 47 2019-11-22 09:04:01 1 250
24756 PAV CAN017V AVENUE LAUGIER Cannes 2019 Novembre 47 2019-11-22 09:10:11 2 450
24757 PAV CAN152V AVENUE ISOLA BELLA Cannes 2019 Novembre 47 2019-11-22 07:10:00 4 970
24758 PAV CAN159V 55 AVENUE DU ROI ALBERT 1ER Cannes 2019 Novembre 47 2019-11-22 08:13:47 1 230
24759 PAV CAN175V RUE FELIX FAURE Cannes 2019 Novembre 47 2019-11-22 08:53:39 1 280

24759 rows × 11 columns

In [5]:
# Manipulation supplémentaire pour classifier les mois

# Définition de la liste chronologique des mois
listeMois = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"]
# Mois devient une variable qualitative (ou catégorielle) qui suit l'ordre défini dans listeMois
data171819["Mois"] = pd.Categorical(data171819["Mois"], listeMois)
# Tri du jeu de données selon la colonne Mois
data171819.sort_values(["Ville", "Année", "Mois"], inplace=True)
data171819
Out[5]:
Collecte Contenant Adresse Ville Année Mois SEMAINE date heure Taux Poids
3762 PAV CAN137V BD VICTOR TUBY Cannes 2017 Janvier 1 2017-01-02 08:41:51 2 490
3763 PAV CAN148V MARCHE FORVILLE Cannes 2017 Janvier 1 2017-01-02 08:46:34 2 710
3764 PAV CAN080V AVENUE VICTOR TUBY Cannes 2017 Janvier 1 2017-01-02 08:50:18 1 160
3765 PAV CAN006V AVENUE LOUIS BLANC Cannes 2017 Janvier 1 2017-01-02 08:55:03 3 650
3766 PAV CAN021V PLACE CORNUT GENTILLE Cannes 2017 Janvier 1 2017-01-02 08:58:51 2 600
... ... ... ... ... ... ... ... ... ... ... ...
24432 PAV THE011V AVENUE DE LA CÔTE D'AZUR Théoule-sur-Mer 2019 Octobre 42 2019-10-15 08:50:15 1 230
24433 PAV THE011V AVENUE DE LA CÔTE D'AZUR Théoule-sur-Mer 2019 Octobre 40 2019-10-01 09:39:28 3 690
24434 PAV THE011V AVENUE DE LA CÔTE D'AZUR Théoule-sur-Mer 2019 Octobre 44 2019-10-29 08:28:18 2 760
24435 PAV THE050V PORT LE GALERE Théoule-sur-Mer 2019 Octobre 42 2019-10-15 08:56:05 1 240
24436 PAV THE050V PORT LE GALERE Théoule-sur-Mer 2019 Octobre 40 2019-10-01 09:43:17 4 940

24759 rows × 11 columns

In [6]:
for i in data20.index:
    data20.loc[i, "Ville"] = dictVilles[data20.loc[i, "Lieu de Collecte"][5:8]]
    data20.loc[i, "Lieu de Collecte"] = data20.loc[i, "Lieu de Collecte"][9:]
data20.Poids = (data20.Poids * 1000).astype(int)
data20
Out[6]:
Prestation Date de réalisation Lieu de Collecte Matériel Poids Ville
0 12001054939 2020-01-02 VOIE JULIA COLONNE K 3 m3 436 Le Cannet
1 12001054940 2020-01-02 BREGUIERES/FONT GALLOU COLONNE K 3 m3 436 Le Cannet
2 12001054941 2020-01-02 AV ECOLES/ROTHMANS COLONNE K 3 m3 436 Le Cannet
3 12001054942 2020-01-02 MERLETTE COLONNE K 2,5 m3 545 Cannes
4 12001054943 2020-01-02 RIOU/HLM COLONNE K 4 m3 581 Cannes
... ... ... ... ... ... ...
5471 12009697556 2020-09-30 GOURGUETTES/RONDPOINT COLONNE K 3 m3 180 Cannes
5472 12009697557 2020-09-30 GOURGUETTES/ARRET BUS COLONNE ENTERREE K 4 m3 240 Cannes
5473 12009697554 2020-09-30 BALZAC/LECLERC COLONNE K 3 m3 360 Cannes
5474 12009697559 2020-09-30 JOURDAN/ENTREE ANAS COLONNE K 3 m3 180 Cannes
5475 12009697558 2020-09-30 JOURDAN/RANCHITO COLONNE K 3 m3 180 Cannes

5386 rows × 6 columns

In [7]:
# Jeu de couleurs de la CACPL
dictVillesCouleurs = {"Cannes": "#7bc3b7", "Le Cannet": "#528238", "Mandelieu-la-Napoule": "#fab55a", "Mougins": "#e84e2c", "Théoule-sur-Mer": "#507999"}

Graphiques sur les nombres de collectes par ville et par année

In [8]:
data17 = data171819[data171819["Année"] == 2017]
In [9]:
# Utilsation du diagramme à barres
data17Count = data17.Ville.value_counts()
px.bar(data17Count, color=data17Count.index, y=data17Count.values, labels={"index": "Ville", "y": "Nombre"}, width=900, title="Nombre de collectes de verre par ville en 2017")
In [10]:
# Utilisation de l'histogramme
fig = px.histogram(data17, x="Ville", color="Ville", width=900, title="Nombre de collectes de verre par ville en 2017")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
In [11]:
# Réutilisation du jeu de couleurs de la CACPL
fig = px.histogram(data17, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2017")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
In [12]:
px.pie(data17, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du nombre de collectes de verre par ville en 2017")
In [13]:
data18 = data171819[data171819["Année"] == 2018]
In [14]:
fig = px.histogram(data18, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2018")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
In [15]:
px.pie(data18, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du nombre de collectes de verre par ville en 2018")
In [16]:
data19 = data171819[data171819["Année"] == 2019]
In [17]:
fig = px.histogram(data19, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2019 (sans décembre)")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
In [18]:
px.pie(data19, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, width=800, title="Répartition du nombre de collectes de verre par ville en 2019 (sans décembre)")
In [19]:
fig = px.histogram(data171819, x="Année", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2019")
fig.update_layout(barmode='group')
fig.update_layout(yaxis_title="Nombre")
In [20]:
fig = px.histogram(data171819, x="Année", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2019")
fig.update_layout(yaxis_title="Nombre")
fig.update_xaxes(type='category')
In [21]:
fig = px.histogram(data171819, x="Ville", color="Année", width=900, title="Nombre de collectes de verre par ville et par année sur la période 2017-2019")
fig.update_layout(barmode="group", yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
In [22]:
px.histogram(data171819, x="Ville", color="Année", width= 900, title="Nombre de collectes de verre par ville et par année sur la période 2017-2019")
fig.update_layout(barmode="stack", yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
In [23]:
fig = px.histogram(data20, x="Ville", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par ville en 2020")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
In [24]:
px.pie(data20, names="Ville", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du nombre de collectes de verre par ville en 2020")
In [25]:
# Création du dataframe regroupant les villes, années, mois et nombres de collectes de 2017 à 2020

# sort=False pour ne pas trier les clés par ordre alphabétique et ainsi conserver l'ordre des mois tels qu'ils apparaissent dans le jeu de données, soit l'ordre chronologique des mois de l'année
# observed=True pour ne montrer que les valeurs observées et ainsi ne pas prendre en compte des décomptes nuls (dus à l'incomplétudes des données fournies) et fausser les tracés de lignes 
# (par exemple le nombre de collectes de verre par mois et par ville en 2019 avec des données manquantes pour novembre et décembre)
data171819Mois = data171819.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True).size().reset_index(name="Nombre")

# Ajout de la colonne pour l'année à data20 pour faire correspondre au format
data20["Année"] = 2020
# Ajout de la colonne pour le mois à partir de la date
data20["Mois"] = pd.to_datetime(data20["Date de réalisation"]).dt.month
# Conversion du nombre du mois en toutes lettres par correspondance avec la liste chronologique des mois
for i in data20.index:
    data20.loc[i, "Mois"] = listeMois[data20.loc[i, "Mois"] - 1]
data20Mois = data20.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True).size().reset_index(name="Nombre")

# Concaténation des 2 dataframes
dataMoisAnnee = pd.concat([data171819Mois, data20Mois])
dataMoisAnnee
Out[25]:
Ville Année Mois Nombre
0 Cannes 2017 Janvier 399
1 Cannes 2017 Février 363
2 Cannes 2017 Mars 449
3 Cannes 2017 Avril 394
4 Cannes 2017 Mai 518
... ... ... ... ...
40 Théoule-sur-Mer 2020 Septembre 33
41 Mougins 2020 Septembre 60
42 Mandelieu-la-Napoule 2020 Septembre 129
43 Cannes 2020 Septembre 361
44 Le Cannet 2020 Septembre 90

216 rows × 4 columns

In [26]:
fig = px.histogram(dataMoisAnnee, x="Année", y="Nombre", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2020")
fig.update_layout(barmode='group', yaxis_title="Nombre")
In [27]:
fig = px.histogram(dataMoisAnnee, x="Année", y="Nombre", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Nombre de collectes de verre par année et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Nombre")
fig.update_xaxes(type="category")
In [28]:
fig = px.histogram(dataMoisAnnee, x="Ville", y="Nombre", color="Année", width=1000, title="Nombre de collectes de verre par ville et par année sur la période 2017-2020")
fig.update_layout(barmode="group", yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
In [29]:
fig = px.histogram(dataMoisAnnee, x="Ville", y="Nombre", color="Année", width=1000, title="Nombre de collectes de verre par ville et par année sur la période 2017-2020")
fig.update_layout(yaxis_title="Nombre")
fig.update_xaxes(categoryorder="total descending")
In [30]:
px.pie(dataMoisAnnee, names="Ville", values="Nombre", color="Ville", color_discrete_map=dictVillesCouleurs, width=800, title="Répartition du nombre de collectes de verre par ville sur la période 2017-2020")

Graphiques sur les nombres de collectes par adresses (regroupées par ville) et par année

Note : les différences entre les intitulés de la colonne Adresse de data171819 et ceux de la colonne Lieu de Collecte (et surtout leur absence de correspondance entre eux, leur nombre notamment étant différent) empêchent leur traitement commun

Cannes

In [31]:
dataCannes171819 = data171819[data171819["Ville"] == "Cannes"]
In [32]:
# Histogramme classique
fig = px.histogram(dataCannes171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [33]:
dataCannes171819Sorted = dataCannes171819.sort_values("Adresse")

# Histogramme avec les adresses par ordre alphabétique
fig = px.histogram(dataCannes171819Sorted, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [34]:
# Histogramme par ordre décroissant sur le nombre de collectes (couleurs et légende selon l'affichage classique)
fig = px.histogram(dataCannes171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10), categoryorder="total descending")
fig.update_layout(yaxis_title="Nombre")
In [35]:
dataCannes171819Count = dataCannes171819.Adresse.value_counts()

# Histogramme par ordre décroissant sur le nombre de collectes et légende en correspondance
fig = px.bar(dataCannes171819Count, color=dataCannes171819Count.index, color_discrete_sequence=px.colors.qualitative.Pastel, y=dataCannes171819Count.values, labels={"index": "Adresse", "y": "Nombre"}, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes sur la période 2017-2019" )
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
In [36]:
fig = px.histogram(dataCannes171819, x="Adresse", histfunc="count", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [37]:
# Histogramme avec appel implicite du histfunc
fig = px.histogram(dataCannes171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [38]:
# Autre méthode (dépréciée)
dataCannes171819Annee = dataCannes171819.groupby(by=["Adresse", "Année"])["Collecte"].count().reset_index(name="nb collectes")

fig = px.histogram(dataCannes171819Annee, x="Adresse", y="nb collectes", histfunc="sum", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [39]:
fig = px.histogram(dataCannes171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
In [40]:
dataCannes20 = data20[data20["Ville"] == "Cannes"]
In [41]:
fig = px.histogram(dataCannes20, x="Lieu de Collecte", histfunc="count", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Cannes en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")

Le Cannet

In [42]:
dataCannet171819 = data171819[data171819["Ville"] == "Le Cannet"]
In [43]:
fig = px.histogram(dataCannet171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [44]:
fig = px.histogram(dataCannet171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [45]:
fig = px.histogram(dataCannet171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
In [46]:
dataCannet20 = data20[data20["Ville"] == "Le Cannet"]
In [47]:
fig = px.histogram(dataCannet20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse au Cannet en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")

Mandelieu-la-Napoule

In [48]:
dataMandelieu171819 = data171819[data171819["Ville"] == "Mandelieu-la-Napoule"]
In [49]:
fig = px.histogram(dataMandelieu171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [50]:
fig = px.histogram(dataMandelieu171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [51]:
fig = px.histogram(dataMandelieu171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
In [52]:
dataMandelieu20 = data20[data20["Ville"] == "Mandelieu-la-Napoule"]
In [53]:
fig = px.histogram(dataMandelieu20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mandelieu-la-Napoule en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")

Mougins

In [54]:
dataMougins171819 = data171819[data171819["Ville"] == "Mougins"]
In [55]:
fig = px.histogram(dataMougins171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [56]:
fig = px.histogram(dataMougins171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [57]:
fig = px.histogram(dataMougins171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
In [58]:
dataMougins20 = data20[data20["Ville"] == "Mougins"]
In [59]:
fig = px.histogram(dataMougins20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Mougins en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")

Théoule-sur-Mer

In [60]:
dataTheoule171819 = data171819[data171819["Ville"] == "Théoule-sur-Mer"]
In [61]:
fig = px.histogram(dataTheoule171819, x="Adresse", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer sur la période 2017-2019")
#fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [62]:
fig = px.histogram(dataTheoule171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
#fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")
In [63]:
fig = px.histogram(dataTheoule171819, x="Adresse", color="Année", width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
#fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Nombre")
In [64]:
dataTheoule20 = data20[data20["Ville"] == "Théoule-sur-Mer"]
In [65]:
fig = px.histogram(dataTheoule20, x="Lieu de Collecte", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Nombre de collectes de verre par adresse à Théoule-sur-Mer en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Nombre")

Graphiques sur les nombres de collectes par mois (par année) et par ville

In [66]:
data17Mois = data17.groupby(by=["Mois", "Ville"], sort=False).size().reset_index(name="Nombre")

px.line(data17Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2017")
In [67]:
data17Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2017]

px.line(data17Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2017")
In [68]:
data18Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2018]

px.line(data18Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2018")
In [69]:
#data19Mois = dataMoisAnnee[(dataMoisAnnee["Année"] == 2019) & (dataMoisAnnee["Nombre"] != 0)] # si observed=False (valeur par défaut) dans le groupby pour la création du dataframe dataMoisAnnee
data19Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2019]

px.line(data19Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2019")
In [70]:
data20Mois = dataMoisAnnee[dataMoisAnnee["Année"] == 2020]

px.line(data20Mois, x="Mois", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Nombre de collectes de verre par mois et par ville en 2020")
In [71]:
dataMoisAnnee["Période"] = dataMoisAnnee["Mois"] + " " + dataMoisAnnee["Année"].astype(str)
dataMoisAnnee
Out[71]:
Ville Année Mois Nombre Période
0 Cannes 2017 Janvier 399 Janvier 2017
1 Cannes 2017 Février 363 Février 2017
2 Cannes 2017 Mars 449 Mars 2017
3 Cannes 2017 Avril 394 Avril 2017
4 Cannes 2017 Mai 518 Mai 2017
... ... ... ... ... ...
40 Théoule-sur-Mer 2020 Septembre 33 Septembre 2020
41 Mougins 2020 Septembre 60 Septembre 2020
42 Mandelieu-la-Napoule 2020 Septembre 129 Septembre 2020
43 Cannes 2020 Septembre 361 Septembre 2020
44 Le Cannet 2020 Septembre 90 Septembre 2020

216 rows × 5 columns

In [72]:
fig = px.line(dataMoisAnnee, x="Période", y="Nombre", color='Ville', color_discrete_map=dictVillesCouleurs, width=2000, title="Nombre de collectes de verre par mois et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(tickangle=270)
In [73]:
dataCannesMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Cannes"]

px.line(dataCannesMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Cannes par mois et par année")
In [74]:
# Graphique avec échelle ajustée
fig = px.line(dataCannesMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Cannes par mois et par année")
# Axe Y commençant à 0
fig.update_layout(yaxis_rangemode="tozero")
In [75]:
dataCannetMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Le Cannet"]

fig = px.line(dataCannetMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre au Cannet par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
In [76]:
dataMandelieuMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Mandelieu-la-Napoule"]

fig = px.line(dataMandelieuMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Mandelieu-la-Napoule par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
In [77]:
dataMouginsMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Mougins"]

fig = px.line(dataMouginsMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Mougins par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")
In [78]:
dataTheouleMois = dataMoisAnnee[dataMoisAnnee["Ville"] == "Théoule-sur-Mer"]

fig = px.line(dataTheouleMois, x="Mois", y="Nombre", color='Année', width=900, title="Nombre de collectes de verre à Théoule-sur-Mer par mois et par année")
fig.update_layout(yaxis_rangemode="tozero")

Graphiques sur les poids collectés par ville et par année

In [79]:
fig = px.histogram(data17, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2017")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
In [80]:
px.pie(data17, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2017")
In [81]:
fig = px.histogram(data18, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2018")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
In [82]:
px.pie(data18, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2018")
In [83]:
fig = px.histogram(data19, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2019")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
In [84]:
px.pie(data19, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2019")
In [85]:
fig = px.histogram(data20, x="Ville", y="Poids", color="Ville", width=900, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par ville en 2020")
fig.update_xaxes(categoryorder="total descending")
fig.update_layout(yaxis_title="Poids (en kg)")
In [86]:
px.pie(data20, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, title="Répartition du poids collecté de verre par ville en 2020")
In [87]:
data171819MoisPoids = data171819.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True)["Poids"].sum().reset_index(name="Poids")

data20MoisPoids = data20.groupby(by=["Ville", "Année", "Mois"], sort=False, observed=True)["Poids"].sum().reset_index(name="Poids")

dataMoisAnneePoids = pd.concat([data171819MoisPoids, data20MoisPoids])
dataMoisAnneePoids
Out[87]:
Ville Année Mois Poids
0 Cannes 2017 Janvier 145080
1 Cannes 2017 Février 118720
2 Cannes 2017 Mars 164300
3 Cannes 2017 Avril 145500
4 Cannes 2017 Mai 196970
... ... ... ... ...
40 Théoule-sur-Mer 2020 Septembre 12955
41 Mougins 2020 Septembre 40393
42 Mandelieu-la-Napoule 2020 Septembre 69364
43 Cannes 2020 Septembre 170898
44 Le Cannet 2020 Septembre 53972

216 rows × 4 columns

In [88]:
fig = px.histogram(dataMoisAnneePoids, x="Année", y="Poids", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par année et par ville sur la période 2017-2020")
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
In [89]:
fig = px.histogram(dataMoisAnneePoids, x="Année", y="Poids", color="Ville", width=1000, color_discrete_map=dictVillesCouleurs, title="Poids collecté de verre par année et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(type="category")
In [90]:
fig = px.histogram(dataMoisAnneePoids, x="Ville", y="Poids", color="Année", width=1000, title="Poids collecté de verre par ville et par année sur la période 2017-2020")
fig.update_layout(barmode="group", yaxis_title="Poids (en kg)")
fig.update_xaxes(categoryorder="total descending")
In [91]:
fig = px.histogram(dataMoisAnneePoids, x="Ville", y="Poids", color="Année", width=1000, title="Poids collecté de verre par ville et par année sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(categoryorder="total descending")
In [92]:
px.pie(dataMoisAnneePoids, names="Ville", values="Poids", color="Ville", color_discrete_map=dictVillesCouleurs, width=800, title="Répartition du poids collecté de verre par ville sur la période 2017-2020")

Graphiques sur les poids collectés par adresses (regroupées par ville) et par année

Cannes

In [93]:
fig = px.histogram(dataCannes171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [94]:
fig = px.histogram(dataCannes171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [95]:
fig = px.histogram(dataCannes171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
In [96]:
fig = px.box(dataCannes171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Cannes sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [97]:
fig = px.histogram(dataCannes20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Cannes en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")

Le Cannet

In [98]:
fig = px.histogram(dataCannet171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [99]:
fig = px.histogram(dataCannet171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [100]:
fig = px.histogram(dataCannet171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
In [101]:
fig = px.box(dataCannet171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse au Cannet sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [102]:
fig = px.histogram(dataCannet20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse au Cannet en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")

Mandelieu-la-Napoule

In [103]:
fig = px.histogram(dataMandelieu171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [104]:
fig = px.histogram(dataMandelieu171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [105]:
fig = px.histogram(dataMandelieu171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
In [106]:
fig = px.box(dataMandelieu171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Mandelieu-la-Napoule sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [107]:
fig = px.histogram(dataMandelieu20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mandelieu-la-Napoule en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")

Mougins

In [108]:
fig = px.histogram(dataMougins171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [109]:
fig = px.histogram(dataMougins171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [110]:
fig = px.histogram(dataMougins171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
In [111]:
fig = px.box(dataMougins171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Mougins sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [112]:
fig = px.histogram(dataMougins20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Mougins en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")

Théoule-sur-Mer

In [113]:
fig = px.histogram(dataTheoule171819, x="Adresse", y="Poids", color="Adresse", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [114]:
fig = px.histogram(dataTheoule171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [115]:
fig = px.histogram(dataTheoule171819, x="Adresse", y="Poids", color="Année", width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer et par année sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(barmode='group', yaxis_title="Poids (en kg)")
In [116]:
fig = px.box(dataTheoule171819, x="Adresse", y="Poids", color="Adresse", width=2000, height=1000, title="Dispersion du poids collecté de verre par adresse à Théoule-sur-Mer sur la période 2017-2019")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")
In [117]:
fig = px.histogram(dataTheoule20, x="Lieu de Collecte", y="Poids", color="Lieu de Collecte", color_discrete_sequence=px.colors.qualitative.Pastel, width=2000, height=1000, title="Poids collecté de verre par adresse à Théoule-sur-Mer en 2020")
fig.update_xaxes(tickangle=270, tickfont=dict(size=10))
fig.update_layout(yaxis_title="Poids (en kg)")

Graphiques sur les poids collectés par mois (par année) et par ville

In [118]:
data17MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2017]

fig = px.line(data17MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2017")
fig.update_layout(yaxis_title="Poids (en kg)")
In [119]:
data18MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2018]

fig = px.line(data18MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2018")
fig.update_layout(yaxis_title="Poids (en kg)")
In [120]:
data19MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2019]

fig = px.line(data19MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2019")
fig.update_layout(yaxis_title="Poids (en kg)")
In [121]:
data20MoisPoids = dataMoisAnneePoids[dataMoisAnneePoids["Année"] == 2020]

fig = px.line(data20MoisPoids, x="Mois", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=900, title="Poids collecté de verre par mois et par ville en 2020")
fig.update_layout(yaxis_title="Poids (en kg)")
In [122]:
dataMoisAnneePoids["Période"] = dataMoisAnneePoids["Mois"] + " " + dataMoisAnneePoids["Année"].astype(str)
dataMoisAnneePoids
Out[122]:
Ville Année Mois Poids Période
0 Cannes 2017 Janvier 145080 Janvier 2017
1 Cannes 2017 Février 118720 Février 2017
2 Cannes 2017 Mars 164300 Mars 2017
3 Cannes 2017 Avril 145500 Avril 2017
4 Cannes 2017 Mai 196970 Mai 2017
... ... ... ... ... ...
40 Théoule-sur-Mer 2020 Septembre 12955 Septembre 2020
41 Mougins 2020 Septembre 40393 Septembre 2020
42 Mandelieu-la-Napoule 2020 Septembre 69364 Septembre 2020
43 Cannes 2020 Septembre 170898 Septembre 2020
44 Le Cannet 2020 Septembre 53972 Septembre 2020

216 rows × 5 columns

In [123]:
fig = px.line(dataMoisAnneePoids, x="Période", y="Poids", color='Ville', color_discrete_map=dictVillesCouleurs, width=2000, title="Poids collecté de verre par mois et par ville sur la période 2017-2020")
fig.update_layout(yaxis_title="Poids (en kg)")
fig.update_xaxes(tickangle=270)
In [124]:
dataCannesMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Cannes"]

fig = px.line(dataCannesMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Cannes par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
In [125]:
dataCannetMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Le Cannet"]

fig = px.line(dataCannetMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre au Cannet par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
In [126]:
dataMandelieuMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Mandelieu-la-Napoule"]

fig = px.line(dataMandelieuMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Mandelieu-la-Napoule par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
In [127]:
dataMouginsMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Mougins"]

fig = px.line(dataMouginsMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Mougins par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")
In [128]:
dataTheouleMoisPoids = dataMoisAnneePoids[dataMoisAnnee["Ville"] == "Théoule-sur-Mer"]

fig = px.line(dataTheouleMoisPoids, x="Mois", y="Poids", color='Année', width=900, title="Poids collecté de verre à Théoule-sur-Mer par mois et par année")
fig.update_layout(yaxis_title="Poids (en kg)", yaxis_rangemode="tozero")